package com.gateio.flutter.lib_core.model

import androidx.annotation.Keep

/**
 * Author: Shper
 * Created: 2024/5/15
 */
@Keep
open class GTFlutterGlobalConfigBuilder {
    // 是否为发布包
    var publishBuild: Boolean = false
    // 当前环境类型
    // prod: 生产环境, pre: 预发布环境, test: 测试环境
    var envType: String = "prod"
    // 是否深色模式
    var darkModeFun: (() -> Boolean) = { false }
    // 当前语言环境
    var languageFun: (() -> String) = { "en" }
    // 是否红涨绿跌模式
    var hzldModeFun: (() -> Boolean) = { false }
    // 基础请求地址
    var baseUrl: (() -> String) = { "" }
    // 主工程版本号
    var versionName: String = "0.0.0"
    // 主工程版本Code
    var versionCode: Int = 0
    // 0:专业版，1:简洁版，2:土耳其分站，3:马耳他分站, 4:大陆版本, 5:香港站, 6:美国站, 7:加拿大站
    // 100: GateWalletApp
    var appType: String = "0"
    // Android 专用，0：官网，1：GooglePlay，2：HuaWei AppGallery
    // iOS 暂时不需要，只有 AppStory
    var appStoreType: String = "0"
    // 系统版本 String 值
    // Android： 13、14、15
    // iOS： 16.0、17.1、17.2
    var osVersion: String = ""
    // 系统版本 Int 值
    // Android 专用，iOS 暂时不需要
    var osVersionSDKInt: Int = 0
    // 手机厂商
    // Android 专用，iOS 暂时不需要
    var vendorName: String = ""
    // 文字缩放
    var textScaleFactor = 1.0
    // 是否是沉浸式状态栏，默认 true
    var transparentStatusBar: Boolean = true

    fun toMap(customDarkMode: Boolean? = null): MutableMap<String, Any> {
        val parasMap = mutableMapOf<String, Any>(
            "publishBuild" to publishBuild,
            "envType" to envType,
            "darkMode" to this.darkModeFun.invoke(),
            "language" to this.languageFun.invoke(),
            "hzldMode" to this.hzldModeFun.invoke(),
            "baseUrl" to this.baseUrl.invoke(),
            "versionName" to versionName,
            "versionCode" to versionCode,
            "appType" to appType,
            "appStoreType" to appStoreType,
            "osVersion" to osVersion,
            "osVersionSDKInt" to osVersionSDKInt,
            "vendorName" to vendorName,
            "textScaleFactor" to textScaleFactor,
            "transparentStatusBar" to transparentStatusBar)
        // 是否自定义设置 darkMode
        customDarkMode?.let {
            parasMap["darkMode"] = customDarkMode
        }
        return parasMap
    }

}